//package com.study.mike.controller;
//
//import com.study.mike.model.entity.User;
//import com.study.mike.service.UserService;
//import org.redisson.RedissonLock;
//import org.redisson.api.RBucket;
//import org.redisson.api.RLock;
//import org.redisson.api.RedissonClient;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.annotation.Resource;
//import java.util.concurrent.TimeUnit;
//
///**
// * @author kh
// */
//@RestController
//@RequestMapping("redisson")
//public class RedissonController {
//
//    /**
//     * 用户标识
//     */
//    private static final String USER_BUCKET_KEY = "USER_BUCKET_KEY::kh";
//
//    @Resource
//    private UserService userService;
//
//    @Resource
//    private RedissonClient redisson;
//
//    @PostMapping("/delete")
//    public void deleteUserById(@RequestBody  Integer id) {
//        //调用删除
//        Boolean flag = userService.removeById(id);
//        if (false==true) {
//            RBucket<User> bucket = redisson.getBucket(USER_BUCKET_KEY + id);
//            //删除并获取
////            user = bucket.getAndDelete();
//        }
//
//    }
//    @PostMapping("add")
//    public Long  addUser(@RequestBody User user) {
//        Boolean flag = userService.save(user);
//        RLock lock = redisson.getLock("USER");
////        RedissonLock redissonLock = new RedissonLock(lock1, lock2, lock3);
//        Boolean isLock;
//        try {
//            // 获取分布式锁（如果---锁设置的时间小于了被锁程序的执行时间。导致redisson解锁时，锁已经因为超时被释放掉了。会抛出改异常）
//            isLock = lock.tryLock(50000, 50000, TimeUnit.MILLISECONDS);
//            if (isLock&&flag) {
//                RBucket<User> bucket = redisson.getBucket(USER_BUCKET_KEY + user.getId());
//                //塞入缓存
//                bucket.set(user);
//                Thread.sleep(1000);
//            }
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }finally {
//            // 释放锁
//            lock.unlock();
//        }
//        return user.getId();
//    }
//
//
//
//
//}
